// 扁平配置：合并共享配置的 rules（避免使用 `extends`，因为在扁平配置中不支持）
// import js from '@eslint/js'
import globals from 'globals'

// 解析器插件，允许我们对 .vue 文件的 <template> 进行 lint
import vueEslintParser from 'vue-eslint-parser'

// eslintPluginVue 让 ESLint 能「理解 Vue 的语法特性」
import eslintPluginVue from 'eslint-plugin-vue'

// Prettier 插件，将格式问题转化为 ESLint 错误 / 警告
import prettierPlugin from 'eslint-plugin-prettier'

// 合并多个配置对象的 rules
// const mergeRules = (...configs) =>
//   Object.assign({}, ...configs.map(c => (c && c.rules) || {}))

// 获取共享配置的 rules 以便合并
// const recommendedRules = (js && js.configs && js.configs.recommended) || {}
// Vue 官方推荐的基础规则
// const vueEssential =
//   (eslintPluginVue &&
//     eslintPluginVue.configs &&
//     eslintPluginVue.configs['vue3-essential']) ||
//   {}

// 最终导出 ESLint 扁平配置
export default [
  {
    // 适用于 JavaScript 和 Vue 文件
    files: ['**/*.js', '**/*.vue'],
    languageOptions: {
      parser: vueEslintParser,
      parserOptions: {
        ecmaVersion: 'latest',
        sourceType: 'module'
      },
      globals: {
        ...globals.browser,
        ...globals.node,
        ...globals.es2021,
        ElMessage: 'readonly',
        ElMessageBox: 'readonly',
        ElLoading: 'readonly'
      }
    },
    plugins: {
      vue: eslintPluginVue,
      prettier: prettierPlugin
    },
    rules: {
      // 基础规则合并（保留原有共享规则）
      // ...mergeRules(recommendedRules, vueEssential),

      // 关闭 Vue Template 引号规则（交给 Prettier 控制）
      // 'vue/html-quotes': 'off',

      //JS 强制单引号（保持不变，双重保障）
      quotes: [
        'error',
        'single',
        {
          avoidEscape: true,
          allowTemplateLiterals: true
        } // 允许转义、允许模板字符串
      ],

      'prettier/prettier': [
        'error',
        {
          singleQuote: true, // 使用单引号
          // vueSingleQuote: false, // Vue 文件中也使用单引号
          semi: false, // 结尾不加分号
          printWidth: 80,
          trailingComma: 'none', // 结尾不添加逗号
          endOfLine: 'auto', //换行符号不限制
          tabWidth: 2,
          useTabs: false,
          bracketSpacing: true,
          // arrowParens: 'avoid'
          vueIndentScriptAndStyle: true,
          htmlWhitespaceSensitivity: 'ignore' // 忽略 HTML 空格敏感性，减少不必要的换行
        }
      ],

      // 保留你原有自定义规则
      'vue/multi-word-component-names': ['warn', { ignores: ['index'] }],
      'vue/no-setup-props-destructure': 'off', // 关闭 setup 解构 props 警告
      'no-undef': 'error' // 关闭未定义变量报错
    }
  },
  // 忽略文件夹
  { ignores: ['node_modules/', 'dist/'] }
]
